1. Field of the Invention
The present invention relates generally to an improved data processing system, and in particular, to a computer implemented method and apparatus for managing software dependencies. Still more particularly, the present invention relates to a computer implemented method, apparatus, and computer usable program code for dependency injection by static code generation.
2. Description of the Related Art
A software system is a system implemented in software for accomplishing a given purpose. A software system is also commonly known as a software application. A software component is a self-contained subset of a software system. A self-contained software is a software that can operate to provide a desired function using the code contained in the software. A software component can be developed, maintained, deployed, and evolved separately from other software components.
Software services are software components. Software services are also commonly known as services. Services offer functions that are published through software language interfaces, or meta-data, such that they can be incorporated by other software systems, applications, or services for the functions they provide. Exposing a software function so that the function is usable by other software is called publishing. A software language interface is a way in which the software's function is published. Data about other data is called meta-data.
Services may depend on other services for performing their functions. A service that depends on another service is called a dependent service. A service on which another service depends is called a dependency service. A dependent service depends on a dependency service when the dependent service has to use some function or feature of the dependency service in order to perform the function of the dependent service. The process of depending in this manner is called dependency.
Presently, the dependency of one service on another is implemented in one of two ways. First, the code of the dependency service may be included in the code of the dependent service. Second, a centralized framework is employed that manages all the services, and provides methods for a dependent service to locate corresponding dependency services. A centralized framework is a software architecture for facilitating interconnectivity amongst various software applications, components, and services.